﻿
using System;
using System.Runtime.Serialization;
using V82;
using V82.Перечисления;//Ссылка;
namespace V82.Перечисления//Ссылка
{
	///<summary>
	///Виды договоров, согласно которым организация выступает в качестве налогового агента
	///</summary>
	[DataContract]
	public enum ВидыАгентскихДоговоров
	{
		[NonSerialized]
		ПустаяСсылка = - 1,
	///<summary>
	///Договор аренды муниципального имущества
	///</summary>
		[EnumMember(Value = "{\"Ссылка\":\"73948ff8-3a8a-4463-b188-a74c53beba06\", \"Представление\":\"Аренда\"}")]
		Аренда = 0,//Аренда (абзац 1 п.3 ст. 161 НК РФ)
	///<summary>
	///Договор покупки государственного или муниципального имущества
	///</summary>
		[EnumMember(Value = "{\"Ссылка\":\"671a7434-c355-442a-afdb-7567dc416777\", \"Представление\":\"РеализацияИмущества\"}")]
		РеализацияИмущества = 1,//Реализация имущества (абзац 2 п. 3 ст.161 НК РФ)
	///<summary>
	///Договор с контрагентом (иностранной компанией) не являющимся плательщиком НДС
	///</summary>
		[EnumMember(Value = "{\"Ссылка\":\"2ed1753c-310d-441d-85d2-2dc6e66d4a2e\", \"Представление\":\"Нерезидент\"}")]
		Нерезидент = 2,//Нерезидент (п.2 ст.161 НК РФ)
	}
	public static partial class ВидыАгентскихДоговоров_Значения//:ПеречислениеСсылка
	{
		///<summary>
		///Договор аренды муниципального имущества
		///</summary>
		public static readonly Guid Аренда = new Guid("4ca788b1-be53-06ba-4463-3a8a73948ff8");//Аренда (абзац 1 п.3 ст. 161 НК РФ)
		///<summary>
		///Договор покупки государственного или муниципального имущества
		///</summary>
		public static readonly Guid РеализацияИмущества = new Guid("6775dbaf-41dc-7767-442a-c355671a7434");//Реализация имущества (абзац 2 п. 3 ст.161 НК РФ)
		///<summary>
		///Договор с контрагентом (иностранной компанией) не являющимся плательщиком НДС
		///</summary>
		public static readonly Guid Нерезидент = new Guid("c62dd285-6de6-2e4a-441d-310d2ed1753c");//Нерезидент (п.2 ст.161 НК РФ)
		public static ВидыАгентскихДоговоров Получить(this ВидыАгентскихДоговоров Значение, byte[] Ссылка)
		{
			return Получить(Значение, new Guid(Ссылка));
		}
		public static ВидыАгентскихДоговоров Получить(this ВидыАгентскихДоговоров Значение, Guid Ссылка)
		{
			if(Ссылка == Аренда)
			{
				return ВидыАгентскихДоговоров.Аренда;
			}
			else if(Ссылка == РеализацияИмущества)
			{
				return ВидыАгентскихДоговоров.РеализацияИмущества;
			}
			else if(Ссылка == Нерезидент)
			{
				return ВидыАгентскихДоговоров.Нерезидент;
			}
			return ВидыАгентскихДоговоров.ПустаяСсылка;
		}
		public static byte[] Ключ(this ВидыАгентскихДоговоров Значение)
		{
			return Ссылка(Значение).ToByteArray();
		}
		public static Guid Ссылка(this ВидыАгентскихДоговоров Значение)
		{
			switch (Значение)
			{
				case ВидыАгентскихДоговоров.Аренда: return Аренда;
				case ВидыАгентскихДоговоров.РеализацияИмущества: return РеализацияИмущества;
				case ВидыАгентскихДоговоров.Нерезидент: return Нерезидент;
			}
			return Guid.Empty;
		}
	}
}